home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / kane / checkpage.h < prev    next >
Text File  |  1990-10-01  |  4KB  |  200 lines

  1.  
  2. Date:        20-MAR-1989 17:21:05 GMT
  3. From:        PHYOKANE@CS8700.UCG.IE
  4. To:        abbottp@ASTON.AC.UK
  5. Subject:        file checkpage.h
  6. sender:     hea"phyokane@cs8700.ucg.ie"  <phyokane@cs8700.ucg.ie>
  7.  
  8. /* -*-C-*- checkpage.h */
  9. /*-->checkpage*/
  10. /**********************************************************************/
  11. /***************************** checkpage ******************************/
  12. /**********************************************************************/
  13. void
  14. checkpage(bytepos)        /* check page whose BOP is at bytepos */
  15. long bytepos;
  16.  
  17. {
  18.     register BYTE command;  /* current command                */
  19.     register INT16 i;        /* command parameter; loop index        */
  20.     char tc;            /* temporary character            */
  21.     INT32 k;            /* temporary parameter            */
  22.     INT16 page_number;      /* TeX's \count0 parameter                  */
  23.     BOOLEAN seen_bop;        /* flag for noting processing of BOP    */
  24.  
  25. /*********************************************************************** 
  26. Check all commands between the BOP at bytepos and the next EOP, downloading
  27. any characters not already loaded.
  28. ***********************************************************************/
  29.  
  30.     seen_bop = FALSE;            /* this is first time through */
  31.     (void) FSEEK(dvifp,bytepos,0);    /* start at the desired position */
  32.     for (;;)    /* "infinite" loop - exits when POST or second BOP met */
  33.     {
  34.     command = (BYTE)nosignex(dvifp,(BYTE)1);
  35.     switch (command)
  36.     {
  37.  
  38.     case SET1:
  39.     case SET2:
  40.     case SET3:
  41.     case SET4:
  42.         (void)checkchldd((BYTE)nosignex(dvifp,(BYTE)(command-SET1+1)));
  43.         break;
  44.  
  45.     case SET_RULE:
  46.         (void) nosignex(dvifp,(BYTE)4);
  47.         (void) nosignex(dvifp,(BYTE)4);
  48.         break;
  49.  
  50.     case PUT1:
  51.     case PUT2:
  52.     case PUT3:
  53.     case PUT4:
  54.             (void)checkchldd((BYTE)nosignex(dvifp,(BYTE)(command-PUT1+1)));
  55.         break;
  56.  
  57.     case PUT_RULE:
  58.         (void) nosignex(dvifp,(BYTE)4);
  59.         (void) nosignex(dvifp,(BYTE)4);
  60.         break;
  61.  
  62.     case NOP:
  63.         break;
  64.  
  65.     case BOP:
  66.         if (seen_bop)
  67.         return;            /* we have been here already */
  68.         seen_bop = TRUE;
  69.  
  70.         for (i=0; i<=9; i++)
  71.                 (void)(INT32)signex(dvifp,(BYTE)4);
  72.         if (!quiet)
  73.             (void)fprintf(stderr,"*");
  74.  
  75.         (void) nosignex(dvifp,(BYTE)4);    /* skip prev. page ptr */
  76.         (void)bopact();
  77.         fontptr = (struct font_entry*)NULL;
  78.         break;
  79.  
  80.     case EOP:
  81.         return;
  82.  
  83.     case PUSH:
  84.         break;
  85.  
  86.     case POP:
  87.         break;
  88.  
  89.     case RIGHT1:
  90.     case RIGHT2:
  91.     case RIGHT3:
  92.     case RIGHT4:
  93.         (void)signex(dvifp,(BYTE)(command-RIGHT1+1));
  94.         break;
  95.  
  96.     case W0:
  97.         break;
  98.  
  99.     case W1:
  100.     case W2:
  101.     case W3:
  102.     case W4:
  103.         (void)signex(dvifp,(BYTE)(command-W1+1));
  104.         break;
  105.  
  106.     case X0:
  107.         break;
  108.  
  109.     case X1:
  110.     case X2:
  111.     case X3:
  112.     case X4:
  113.         (void)signex(dvifp,(BYTE)(command-X1+1));
  114.         break;
  115.  
  116.     case DOWN1:
  117.     case DOWN2:
  118.     case DOWN3:
  119.     case DOWN4:
  120.         (void)signex(dvifp,(BYTE)(command-DOWN1+1));
  121.         break;
  122.  
  123.     case Y0:
  124.         break;
  125.  
  126.     case Y1:
  127.     case Y2:
  128.     case Y3:
  129.     case Y4:
  130.         (void)signex(dvifp,(BYTE)(command-Y1+1));
  131.         break;
  132.  
  133.     case Z0:
  134.         break;
  135.  
  136.     case Z1:
  137.     case Z2:
  138.     case Z3:
  139.     case Z4:
  140.         (void) signex(dvifp,(BYTE)(command-Z1+1));
  141.         break;
  142.  
  143.     case FNT1:
  144.     case FNT2:
  145.     case FNT3:
  146.     case FNT4:
  147.         (void)setfntnm((INT32)nosignex(dvifp,
  148.         (BYTE)(command-FNT1+1)));
  149.         break;
  150.  
  151.     case XXX1:
  152.     case XXX2:
  153.     case XXX3:
  154.     case XXX4:
  155.         k = (INT32)nosignex(dvifp,(BYTE)(command-XXX1+1));
  156.         while (k--)
  157.         {
  158.          (void)nosignex(dvifp,(BYTE)1);
  159.         }
  160.         break;
  161.  
  162.     case FNT_DEF1:
  163.     case FNT_DEF2:
  164.     case FNT_DEF3:
  165.     case FNT_DEF4:
  166.        if (preload)
  167.          (void)skipfont ((INT32) nosignex(dvifp,
  168.                           (BYTE)(command-FNT_DEF1+1)));
  169.        else
  170.          (void)readfont ((INT32) nosignex(dvifp,
  171.                           (BYTE)(command-FNT_DEF1+1)));
  172.         break;
  173.  
  174.     case PRE:
  175.         (void)fatal("checkpage():  PRE occurs within file");
  176.         break;
  177.  
  178.     case POST:
  179.         break;
  180.  
  181.     case POST_POST:
  182.         (void)fatal("checkpage():  POST_POST with no preceding POST");
  183.         break;
  184.  
  185.     default:
  186.         if (command >= FONT_00 && command <= FONT_63)
  187.         (void)setfntnm((INT32)(command - FONT_00));
  188.         else if (command >= SETC_000 && command <= SETC_127)
  189.         (void)checkchldd((BYTE)(command-SETC_000));
  190.         else
  191.         {
  192.         (void)sprintf(message,"checkpage():  %d is an undefined command",
  193.             command);
  194.         (void)fatal(message);
  195.         }
  196.         break;
  197.     }
  198.       }
  199.   }
  200.